#!/bin/bash

# 为Linux系统安装libqrencode库的脚本 - 简化版

# 默认安装目录，确保使用绝对路径
INSTALL_DIR="$(pwd)/../install"

# 检查是否为root用户
if [ "$(id -u)" != "0" ]; then
   echo "此脚本需要以root权限运行"
   echo "请使用 sudo ./install_libqrencode.sh"
   exit 1
fi

# Ubuntu/Debian安装方式
install_ubuntu() {
    echo "正在更新软件包列表..."
    apt-get update
    echo "正在安装libqrencode-dev..."
    apt-get install -y libqrencode-dev libpng-dev
    echo "安装完成！"
    verify_installation
}

# 源码编译安装方式
install_from_source() {
    echo "正在安装依赖项..."
    # 安装基本的编译工具和依赖
    apt-get install -y git build-essential autoconf automake libtool libpng-dev
    
    # 确保安装目录存在
    mkdir -p "$INSTALL_DIR"
    
    echo "正在从GitHub克隆libqrencode源码..."
    git clone https://github.com/fukuchi/libqrencode.git
    cd libqrencode
    
    echo "正在配置、编译和安装到 $INSTALL_DIR..."
    ./autogen.sh
    ./configure --prefix="$INSTALL_DIR"
    make
    make install
    
    echo "源码编译安装完成！"
    echo "库已安装到: $INSTALL_DIR"
    verify_installation
}

# 验证安装
verify_installation() {
    echo -e "\n验证libqrencode安装情况："
    if [ -f /usr/include/qrencode.h ] || [ -f /usr/local/include/qrencode.h ] || [ -f "$INSTALL_DIR/include/qrencode.h" ]; then
        echo "✓ 头文件已找到"
    else
        echo "✗ 未找到头文件"
    fi
    
    if ldconfig -p | grep -q libqrencode || [ -f "$INSTALL_DIR/lib/libqrencode.so" ]; then
        echo "✓ 库文件已找到"
    else
        echo "✗ 未找到库文件"
        echo "提示：可能需要运行 'ldconfig' 命令或检查安装路径"
    fi
    
    echo -e "\n编译提示："
    if [ -d "$INSTALL_DIR" ]; then
        echo "使用自定义安装目录时，请使用以下命令编译："
        echo "gcc -o generate_qr qr.c -I$INSTALL_DIR/include -L$INSTALL_DIR/lib -lqrencode -lpng"
    else
        echo "编译时请使用以下命令链接库："
        echo "gcc -o generate_qr qr.c -lqrencode -lpng"
    fi
}

# 显示帮助信息
show_help() {
    echo "libqrencode库安装脚本（简化版）"
    echo "此脚本提供两种方式在Ubuntu系统上安装libqrencode库"
    echo ""
    echo "用法: sudo ./install_libqrencode.sh [选项] [安装目录]"
    echo "选项："
    echo "  -h, --help     显示帮助信息"
    echo "  -u, --ubuntu   使用Ubuntu/Debian包管理器安装"
    echo "  -s, --source   使用源码编译安装方式"
    echo ""
    echo "默认安装目录：../install"
    echo "示例："
    echo "  sudo ./install_libqrencode.sh -s ../install"
    echo "  sudo ./install_libqrencode.sh -u"
}

# 处理命令行参数
while [[ $# -gt 0 ]]; do
    case "$1" in
        -h|--help)
            show_help
            exit 0
            ;;
        -u|--ubuntu)
            INSTALL_METHOD="ubuntu"
            shift
            ;;
        -s|--source)
            INSTALL_METHOD="source"
            shift
            ;;
        *)
            # 如果参数不是选项，则视为安装目录，并转换为绝对路径
            if [[ ! $1 == -* ]]; then
                # 转换为绝对路径
                if [[ $1 == /* ]]; then
                    INSTALL_DIR="$1"
                else
                    INSTALL_DIR="$(pwd)/$1"
                fi
            fi
            shift
            ;;
    esac
done

# 执行安装
if [[ -n "$INSTALL_METHOD" ]]; then
    case "$INSTALL_METHOD" in
        ubuntu)
            install_ubuntu
            ;;
        source)
            install_from_source
            ;;
    esac
else
    # 默认显示帮助信息
    show_help
    echo -e "\n请指定安装方式，例如：sudo ./install_libqrencode.sh -u 或 sudo ./install_libqrencode.sh -s"
    exit 1
fi